The present invention relates to the display of transparent video overlays on a display monitor. More specifically, it concerns a memory management and buffer organization technique for preserving memory and pixel processor bandwidth while processing overlay graphic images for display on a monitor.
With the advent of the Internet, there has been explosive growth in the number of people who access data from resources available online. These resources include World Wide Web pages which provide access to various types of digital data, including graphic images (both still and video). On occasion, it may be desirable to overlay such a graphic image on a background graphic image such as broadcast video, decoded MPEG, recorded video, or the like.
One system in which such graphic image overlay is desirable is an Internet access system such as the WEBTV(copyright) Internet access network. (WEBTV is a registered trademark of WebTV Networks, Inc. of Mountain View, Calif.) The WEBTV Internet access network includes a large number of Internet terminals, also referred to as client terminals, which present graphic images retrieved from the Internet. The WEBTV Internet access network also includes at least one Internet server, which provides a convenient standardized interface to facilitate access of the Internet by the client terminal. The server also offers supplemental services, such as email, news reports, television program guides and enhanced access to certain web pages. Typically, the graphic images retrieved from the Internet are presented in conjunction with other graphic images, often a video program or the like.
When it is desired to present a non-obtrusive graphic overlay, video background material and graphic overlay material may be blended in a transparent way in a defined area of the screen such that the video background source and the graphic overlay are both visible but with somewhat reduced contrast. This transparent graphic overlay mode of operation permits the viewer of a display monitor to continue to watch, for example, a favorite television program, while nevertheless monitoring the progress of a breaking news story or sports score update unobtrusively in a defined, typically smaller, area of the display monitor""s screen.
The blending performed by the hardware graphic processor, as used herein, refers to the fact that the visible image within the overlay window represents a blended mix of both video background material and one or more graphic overlay images. The producers of home entertainment devices that provide such overlay capability determine a desired blend, or transparency factor. For example, a transparency factor or blend of 50% would represent a 50xe2x80x9450 contribution from the video background material and the graphic overlay material, presented in a smooth and regular way across the two-dimensional window that is affected by blending.
Blending will be understood to be a process by which the color and intensity components of a video image are set as desired. For example, the red, green and blue (or alternative tri-color phosphors) and intensity components for each pixel within the graphic overlay window are determined by multiplying the video background data by a weighting factor, e.g. 70, and by multiplying the graphic overlay data by a complementary weighting factor, e.g. 30, to produce a full-screen output buffer for raster scanning on the display monitor.
Those of skill in the art will appreciate that the overlay graphic data source may be disk, tape, CD ROM, CCD memory or any other memory device capable of storing graphic data to a data storage medium and reading data from the storage medium and writing the data to an operatively connected memory such as semiconductor memory or what is referred to herein as RAM. In other words, any mass storage device capable of having its graphic data contents read therefrom may be a suitable overlay graphic data source, within the spirit and scope of the invention.
Such overlay techniques typically include allocation of an entire overlay-sized area in memory for update buffering of the pixels that make up the graphic overlay image. This is because, although the graphic overlay image is presented typically in a fixed area of the display monitor""s screen, its contents nevertheless are subject to change from field to field or frame to frame. Because the overlay graphic image is subject to change over time, its representation in memory must be updated periodically, e.g. typically at the refresh or vertical raster scan rate of the display monitor. This imposes a substantial memory allocation burden related to buffering the image and also imposes a substantial burden on the video or graphic processor that must blend each pixel within the overlay window with the corresponding pixel in the video background to produce what will be referred to herein as a blended output for presentation on the display monitor.
It is straightforward to use one or more buffer memories to store overlay graphics for transparent display over, for example, television video backgrounds, each buffer being equal in size with the number of pixels in the visible screen area of a display monitor, regardless of the spatial extent of the transparent overlay graphics and regardless of the extent of change occurring between successive frames (fields).
However, such technique is extremely memory intensive and requires significant pixel processing bandwidth, or power and time, to perform the pixel-by-pixel transparency weighting computations. Memory and processor bandwidth are at a premium. Such an approach to memory allocation might assume that all pixels within the overlay graphic window are visible (as opposed to entirely transparent) and that all pixels change between successive frames, so that two entire display monitor screen-sized buffersxe2x80x94an offscreen buffer for updating as the overlay graphic within the window changes, and an onscreen display buffer for blending with the video to produce the onscreen imagexe2x80x94must be stored in memory and processed by the graphic processor even if only a few pixels therein are of such visible or changing character.
The invention frees up memory to other uses by allocating memory to graphics buffering only to the extent required. It also saves graphic processor bandwidth by processing, e.g. pixel blending as described above, only to the extent required. It does so by defining a regular grid of so-called tiles or cells in the overlay graphic data window (e.g. orthogonally arrayed squares of 32-pixel sides) and allocating memory only to those requiring update (i.e. only those that are visible and subject to change between successive frames). Allocation is dynamic and requires little tagging overhead to keep track of the tiles in memory by location in the graphic window. Processing is only of those tiles for which memory is allocated, since entirely transparent tiles within the window require no blending or processing whatsoever because they are invisible.
In one implementation, only onscreen buffered graphics are tiled and the offscreen buffered graphics require full-sized memory allocation. In another implementation, offscreen buffered graphics are tiled also by clipping within variously sized buffers during successive drawing operation passes wherein the various sized buffers all are smaller than the entire window. When there is less memory available for allocation to buffering, new offscreen buffer-processed tiles may be swapped for existing (visible) onscreen tiles as the offscreen tiles are processed. Alternatively, when there is more memory available, new tiles may be processed and block-stored in memory until a wholesale swap can occur invisibly.
The effect of blending within a graphic overlay window is illustrated in FIG. 1, wherein it may be seen that both the video background image and the graphic overlay image are visible within the window in the upper left-hand corner of the display monitor""s screen. The fact that the overlaid images are each of slightly lower contrast than would be seen if the two images were displayed in non-overlapping areas of the display monitor""s screen has been deemed acceptable to viewers because of the overlay window""s enhanced content.
A hardware pixel processor (part of the hardware graphic processor) may perform such blending of the contents of the onscreen graphic display buffer and the video buffer for raster scanning by the display monitor""s electronics. The onscreen graphic display buffer contains flicker-free overlay graphic pixels representing the graphic overlay window region or regions of the display. The processing overhead of blending each pixel based upon a percentage contribution from each of two sourcesxe2x80x94the video program material and the graphic overlay update bufferxe2x80x94is significant because each pixel within the graphic overlay window (which may easily number in the tens of thousands) must be so processed every refresh period, e.g. 50 or 60 times per second under current television industry standards.
It may be understood, then, that such approaches to presentation of transparent graphic overlays of video program material have been memory bandwidth-intensive and graphic processor-intensive. Typically, three buffers have been dedicated to the task, one for video material, one for offscreen graphic compositing or blending and one for onscreen graphic display. Also, typically, the graphic processor has processed every pixel within the graphic overlay window, whether it required processing or not. Under such approaches, no differentiation is made between pixels within the graphic overlay window which actually require expensive buffering and processing and those that do not. Slow and expensive buffering and processing are the by-product of such old ways of thinking.